#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
验证数据提取工具功能
"""

import pandas as pd
import json
import os

def verify_tool():
    """验证工具功能"""
    
    print("=== 验证数据提取工具功能 ===\n")
    
    # 检查文件存在性
    files = {
        '数据文件': '../行业均值/整理后的行业指标数据.xlsx',
        '字典文件': '../行业均值/行业指标字典表.xlsx',
        '提取工具': '../extract_industry_data.py',
        '简化工具': '../extract_simple.py'
    }
    
    print("📁 文件检查:")
    for name, file in files.items():
        if os.path.exists(file):
            print(f"  ✅ {name}: {file}")
        else:
            print(f"  ❌ {name}: {file} (不存在)")
    
    # 验证数据结构
    data_file = '../行业均值/整理后的行业指标数据.xlsx'
    if os.path.exists(data_file):
        try:
            print(f"\n📊 数据结构验证:")
            df = pd.read_excel(data_file, sheet_name='整理后数据')
            
            required_columns = ['行业名称', '年份', '指标名称', '优秀值', '良好值', '平均值', '较低值', '较差值']
            missing_columns = [col for col in required_columns if col not in df.columns]
            
            if missing_columns:
                print(f"  ❌ 缺少必要列: {missing_columns}")
            else:
                print(f"  ✅ 所有必要列都存在")
            
            print(f"  📈 数据统计:")
            print(f"    • 总记录数: {len(df)}")
            print(f"    • 行业数量: {df['行业名称'].nunique()}")
            print(f"    • 指标数量: {df['指标名称'].nunique()}")
            print(f"    • 年份范围: {df['年份'].min()} - {df['年份'].max()}")
            
        except Exception as e:
            print(f"  ❌ 读取数据文件失败: {e}")
    
    # 验证字典文件
    dict_file = '../行业均值/行业指标字典表.xlsx'
    if os.path.exists(dict_file):
        try:
            print(f"\n📖 字典文件验证:")
            df_dict = pd.read_excel(dict_file)
            
            required_dict_columns = ['指标名称', '指标大类']
            missing_dict_columns = [col for col in required_dict_columns if col not in df_dict.columns]
            
            if missing_dict_columns:
                print(f"  ❌ 字典文件缺少必要列: {missing_dict_columns}")
            else:
                print(f"  ✅ 字典文件结构正确")
                print(f"  📊 字典统计:")
                print(f"    • 指标数量: {len(df_dict)}")
                print(f"    • 分类数量: {df_dict['指标大类'].nunique()}")
                
                categories = df_dict['指标大类'].value_counts()
                print(f"  📋 分类详情:")
                for category, count in categories.items():
                    print(f"    • {category}: {count} 个指标")
                    
        except Exception as e:
            print(f"  ❌ 读取字典文件失败: {e}")
    
    # 模拟提取功能测试
    if os.path.exists(data_file):
        try:
            print(f"\n🔧 功能模拟测试:")
            df = pd.read_excel(data_file, sheet_name='整理后数据')
            
            # 测试1: 行业关键词搜索
            test_keyword = "酒"
            wine_mask = df['行业名称'].str.contains(test_keyword, case=False, na=False)
            wine_industries = df[wine_mask]['行业名称'].unique()
            print(f"  🔍 搜索关键词 '{test_keyword}':")
            print(f"    • 找到 {len(wine_industries)} 个相关行业")
            for industry in sorted(wine_industries):
                print(f"      - {industry}")
            
            # 测试2: 年份筛选
            latest_year = df['年份'].max()
            year_data = df[df['年份'] == latest_year]
            print(f"  📅 {latest_year}年数据:")
            print(f"    • 记录数: {len(year_data)}")
            print(f"    • 行业数: {year_data['行业名称'].nunique()}")
            
            # 测试3: 组合查询
            if len(wine_industries) > 0:
                combined = df[wine_mask & (df['年份'] == latest_year)]
                print(f"  🎯 '{test_keyword}' + {latest_year}年:")
                print(f"    • 记录数: {len(combined)}")
                
                if len(combined) > 0:
                    # 模拟JSON输出
                    sample = combined.head(2)
                    
                    # 添加指标大类（使用内置映射）
                    indicator_mapping = {
                        '净资产收益率(%)': '盈利能力分析',
                        '销售营业利润率(%)': '盈利能力分析',
                        '存货周转率(次)': '经营周转能力分析',
                        '资产负债率(%)': '偿债能力分析',
                        '利润总额增长率(%)': '成长能力分析',
                        '研发经费投入强度(%)': '资本性支出分析'
                    }
                    
                    sample_with_category = sample.copy()
                    sample_with_category['指标大类'] = sample_with_category['指标名称'].map(indicator_mapping)
                    sample_with_category['指标大类'] = sample_with_category['指标大类'].fillna('未分类')
                    
                    # 重新排列列
                    columns_order = ['行业名称', '年份', '指标大类', '指标名称', '优秀值', '良好值', '平均值', '较低值', '较差值']
                    available_columns = [col for col in columns_order if col in sample_with_category.columns]
                    result_sample = sample_with_category[available_columns]
                    
                    print(f"    • 示例输出格式:")
                    for i, (_, row) in enumerate(result_sample.iterrows()):
                        print(f"      记录 {i+1}:")
                        for col in available_columns:
                            print(f"        {col}: {row[col]}")
                        print()
            
            print(f"  ✅ 功能模拟测试通过")
            
        except Exception as e:
            print(f"  ❌ 功能测试失败: {e}")
    
    # 使用建议
    print(f"\n💡 使用建议:")
    print(f"  1. 查看可用数据:")
    print(f"     python extract_industry_data.py --list-industries")
    print(f"     python extract_industry_data.py --list-years")
    print(f"  2. 提取特定数据:")
    print(f"     python extract_industry_data.py --industry 酒 --year 2023")
    print(f"  3. 保存到文件:")
    print(f"     python extract_industry_data.py --industry 制造 --year 2022 --output result.json")
    
    print(f"\n✅ 验证完成！工具已准备就绪。")

if __name__ == "__main__":
    verify_tool()
